/**
 * 日志相关接口-RestFull风格
 * 包括新增日志、删除日志、查询日志
 * 
 * RestFull风格：
 * 请求方式的不同：
 *    get：查询
 *    post：增加
 *    put：修改
 *    delete：删除
 * 请求路径携带参数的不同：
 *    路径通过动态参数方式传参
 *    举例：
 *        后端：/petDairy/get/:id
 *        前端：/petDairy/get/1
 */
const express = require('express')
// 创建路由对象
const router = express.Router()
// 引入数据库连接池
const pool = require("../../db/db")
// 引入Joi表单校验
const Joi = require("joi")
// 引入Response
const Response = require("../../utils/ResponseData")
/**
 * 新增日志
 * url：http://localhost:3001//petDairy/add
 * method：post
 * params：req.body
 */
router.post('/petDairy/add', (req, res) => {
    //console.log(req.headers);
    console.log("进入到了PetDairy.js->addDairy请求：", req.body);
    // 解构表单数据
    let { d_img, d_man_name, d_city, d_time, d_detail } = req.body
    // 校验规则
    let schema = Joi.object({
        d_img: Joi.string().required(),
        d_man_name: Joi.string().required(),
        d_city: Joi.string().required(),
        d_time: Joi.required(),
        d_detail: Joi.string().required()
    })
    // 校验
    let { error, value } = schema.validate(req.body)
    if (error) {
        res.send(Response.error(error))
        return
    }
    // 编写sql
    const sql = "insert into pet_diary(d_img,d_man_name,d_city,d_time,d_detail) values(?,?,?,?,?)"
    // 执行sql
    pool.query(sql, [d_img, d_man_name, d_city, d_time, d_detail], (err, result) => {
        if (err) {
            console.log(err)
            res.send(Response.error("服务器响应失败", 500))
            return
        }
        if (result && result.insertId > 0) {
            res.send(Response.success(null, "伴宠日志添加成功！"))
        } else {
            res.send(Response.error("伴宠日志添加失败！"))
        }
    })
})
/**
 * 查询日志
 * @param page:当前页码
 * @param pageSize:每页显示条数
 * @param keywords:关键字
 */
router.get("/petDairy/get/:page/:pageSize/:keywords", async (req, res) => {
    // 解构获取的参数
    let { page, pageSize, keywords } = req.params
    // 校验规则
    let schema = Joi.object({
        page: Joi.number().required(),
        pageSize: Joi.number().max(10).required(),
        keywords: Joi.string().required() //''
    })
    // 校验
    let { error, value } = schema.validate(req.params)
    if (error) {
        res.send(Response.error(error))
        console.log("-------", error)
        return
    }
    try {
        console.log('keywords', keywords) // "''" ''
        if (keywords == "''") keywords = ''
        // 编写sql-查询每页信息
        // 根据当前页和每页显示条数，计算开始位置
        const startIndex = (page - 1) * pageSize
        pageSize = parseInt(pageSize)
        const sql = "select * from (select * from pet_diary where d_man_name like ? or d_city like ?) d1 limit ?,?"
        // 执行sql
        let result = await pool.querySync(sql, [`%${keywords}%`, `%${keywords}%`, startIndex, pageSize])

        // 编写sql-查询总条数
        const sql2 = "select count(d_id) as count from (select * from pet_diary where d_man_name like ? or d_city like ?) d1"
        // 执行sql
        let result2 = await pool.querySync(sql2, [`%${keywords}%`, `%${keywords}%`])
        // 获取总条数
        const total = result2[0].count
        // 计算总页数：总页数 = 总条数%每页显示条数==0?总条数/每页显示条数:总条数/每页显示条数+1
        // 计算总页数：总页数 = Math.ceil(总条数/每页显示条数) 
        const maxPage = Math.ceil(total / pageSize)

        res.send(Response.success({ page, pageSize, total, maxPage, result }))
    } catch (e) {
        console.log("======", e)
        res.send(Response.error(e))

    }

})

/**
 * 删除日志接口
 * @param id: 日志编号
 */
router.delete("/petDairy/delete/:id", (req, res) => {
    console.log("进入了PetDairy.js->删除：", req.params)
    // 解构前端传过来的参数
    let { id } = req.params
    // 校验规则
    let schema = Joi.object({
        id: Joi.number().required()
    })
    // 校验
    let { error } = schema.validate(req.params)
    if (error) {
        res.send(Response.error(error))
        return
    }
    // 编写sql
    let sql = "delete from pet_diary where d_id=?"
    // 执行sql
    pool.query(sql, [id], (error, result) => {
        if (error) {
            res.send(Response.error(error))
            return
        }
        console.log("----", result);
        if (result && result.affectedRows > 0) {
            res.send(Response.success(null, "日志信息删除成功！"))
        } else {
            res.send(Response.error("日志信息删除失败！"))
        }
    })
})


module.exports = router